home *** CD-ROM | disk | FTP | other *** search
- Date: Thu, 24 Feb 1994 10:31:15 -0500
- From: "Nicholas S Castellano" <entropy@terminator.rs.itd.umich.edu>
- To: mint@terminator.rs.itd.umich.edu
- Subject: mint 1.10: biosfs.c -- bios_getxattr()
-
- In bios_getxattr() it's not a good idea to return the attributes of the
- file to which a fake device currently is pointing. Doing so messes
- up things like ttyname() in the mint libs, because the /dev directory
- ends up with several things pointing to the tty device (e.g. we
- usually get "/dev/con" instead of a pipe name).
-
- Julian suggested that I change the ttyname() function to search the /pipe
- directory before /dev, but that doesn't really fix the problem because
- logins on /dev/modem1 will get "/dev/aux" first since it appears earlier in
- the device table. Since these entries in /dev are all supposed to be
- character-special files anyway, making them look like different character
- special files (or even making them appear to be real files, as may be the
- case for /dev/fd/*) is counterintuitive anyway (and can screw up things like
- tar, file, and find, which know about devices and inodes.)
-
- biosfs.c: ++entropy@terminator.rs.itd.umich.edu
- Don't "follow the chain" for character special devices
- in bios_getxattr().
-
- --- 1.10.1.3 1994/02/19 09:09:48
- +++ biosfs.c 1994/02/24 14:41:38
- @@ -349,9 +349,11 @@
- fcookie *fc;
- XATTR *xattr;
- {
- +#ifdef XATTR_FOLLOW_CHAIN
- FILEPTR *f;
- - struct bios_file *b = (struct bios_file *)fc->index;
- long r;
- +#endif
- + struct bios_file *b = (struct bios_file *)fc->index;
- int majdev, mindev;
-
- majdev = UNK_RDEV;
- @@ -367,26 +369,34 @@
- xattr->dev = fc->dev;
- } else if (IS_FD_ENTRY(fc)) {
- /* u:\dev\fd\n */
- +#ifdef FOLLOW_XATTR_CHAIN
- f = curproc->handle[(int)fc->aux];
- if (f) {
- r = (*f->fc.fs->getxattr)(&f->fc, xattr);
- if (r < 0)
- return r;
- } else {
- +#endif
- majdev = FAKE_RDEV;
- mindev = ((int)fc->aux) & 0x00ff;
- set_xattr(xattr, S_IFCHR | DEFAULT_MODE, majdev|mindev);
- +#ifdef FOLLOW_XATTR_CHAIN
- }
- +#endif
- } else if (b->device == &fakedev) {
- +#ifdef FOLLOW_XATTR_CHAIN
- if ((f = curproc->handle[b->private]) != 0) {
- /* u:\dev\stdin, u:\dev\stdout, etc. */
- r = (*f->fc.fs->getxattr) (&f->fc, xattr);
- if (r < 0) return r;
- } else {
- +#endif
- majdev = FAKE_RDEV;
- mindev = ((int)b->private) & 0x00ff;
- set_xattr(xattr, S_IFCHR|DEFAULT_MODE, majdev|mindev);
- +#ifdef FOLLOW_XATTR_CHAIN
- }
- +#endif
- } else {
- *xattr = b->xattr;
- xattr->index = fc->index;
-
- --
- entropy -- it's not just a good idea, it's the second law.
- Personal mail: entropy@gnu.ai.mit.edu
- MiNT library mail: entropy@terminator.rs.itd.umich.edu
- "what do you have against octal?" -jrb
-
-